/**
 * @file airgap.h
 * @brief Реализация воздушного зазора между слоями материала.
 * @version 0.1
 * @copyright MIT License
 * @author А.В. Лепихов
 * @date 2012
 */

#ifndef _AIRGAP_H_
#define _AIRGAP_H_

#include <material.h>
#include <math_addons.h>
#include <model.h>

#define AIRGAP_MATERIAL_NAME	"AIR"
/**
 * @brief Задает свойства воздушного зазора.
 * @details Эффективная теплопроводность рассчитывается по сумме конвективной теплопередачи и излучения стенки на стенку.
 */
class CAirGap : public CMaterial {
	/** Указатель на расчётную модель. */
	thm_t* thm;
	/** Номер точки с воздушным зазором в расчётной модели. */
	int PointNum;
	double rho, cp, lambda;	
public:
	/**
	 * @brief Конструктор класса.
	 * @param th - указатель на расчётную тепловую 1D-модель.
	 * @param pointNum - номер расчётной точки, в которой располагается зазор.
	 */
	CAirGap(thm_t* thm, int pointNum);
	
	virtual double heatQuantity(double T) const;
	/**
	 * @brief Выдать плотность воздуха при данной температуре. Определяется по высоте. Значение температуры фактически игнорируется.
	 * @param T - температура материала.
	 * @return Плотность
	 */
	virtual double r(double T) const;
	/**
	 * @brief Выдать теплопроводность при данной температуре. Определяется по высоте. Значение температуры фактически игнорируется.
	 * @param T - температура материала.
	 * @return теплопроводность
	 */
	virtual double l(double T) const;
	
	/**
	 * @brief Выдать теплоёмкость при данной температуре. Определяется по высоте. Значение температуры фактически игнорируется.
	 * @param T - температура материала.
	 * @return теплоёмкость
	 */
	virtual double c(double T) const;
	virtual double eps(double T) const;
	/** Ablation A-coefficient.
	 * @param T - current temperature.
	 */
	virtual double a(double T) const;
	/** Ablation B-coefficient.
	 * @param T - current temperature.
	 */
	virtual double b(double T) const;
	virtual void print(FILE *out);
};

#endif /* _AIRGAP_H_ */

